package com.mida.app.report.vo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 报告listVo
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DocReportListVo implements Serializable {

    /**
     * 加急标识
     */
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long emergencySign;

    /**
     * 加急名称
     */
    private String emergencySignName;
    /**
     * 影像号
     */
    private String stPatientId;

    /**
     * 申请单号
     */
    private String requisitionId;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long requestSoid;

    /**
     * 姓名
     */
    private String personName;

    /**
     * 性别
     */
    private String gender;
    private BigDecimal genderCode;

    /**
     * 年龄
     */
    private BigDecimal age;
    /**
     * 患者角色标识
     */
    private BigDecimal customerSoid;
    /**
     * 就诊类型名称
     */
    private String clinicTypeName;
    private BigDecimal visitScenceCode;//就诊场景代码(就诊类型标识)

    /**
     * 开单科室名称，申请科室
     */
    private String businessUnitName;
    private BigDecimal clinicalBusinessUnitSoid;
    /**
     * 检查类型
     */
    private String ctType;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long ctTypeSoid;

    /**
     * 检查部位
     */
    private List<String> checkPart;

    /**
     * 上机时间（检查时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date operateDateTime;

    /**
     * 书写医生
     */
    private String writingDoctor;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long writingDoctorSoid;

    /**
     * 审核医生
     */
    private String checkDoctor;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long checkDoctorSoid;

    /**
     * 报告状态
     */
    private String reportStatus;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long reportProcessStatus;//报告流程状态
    /**
     * 报告小状态
     */
    private String statusName;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long Status;//报告自身状态

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthDate;

    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long registrationFormSoid;//登记标识
    private String registrationNo;//登记号


    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long examinationVisitSoid;//上机号（检查号）

    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long operatorSoid;//检查标识

    /**
     * 服务实例数据
     */
    private List<ServiceInstanceVo> serviceInstanceVoList;

    private String requestStatusName;
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long requestStatus;

    //报告soid
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long stReportSoid;
    //病人soid
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long apntPersonSoid;

    //还有几个元素
    private Integer elements;

    //几份申请单
    private Integer requisitions;
    //几份登记单
    private Integer registrations;
    //合单后存下的数据
    private List<DocReportListVo> docReportListVos;

    //用来展示的数据
    private Map<Long, List<DocReportListVo>> dataMap;

    @ApiModelProperty(value = "报告类型", required = false)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long reportType;

    @ApiModelProperty(value = "锁状态")
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long lockStatus;

    @ApiModelProperty(value = "加锁人姓名")
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private String lockUserName;


    @ApiModelProperty("锁定人员标识")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long lockUserSoid;


}
